package com.zaimokuza.cn.service;

import com.zaimokuza.cn.entity.PageResult;
import com.zaimokuza.cn.entity.blog.Tag;

import java.util.ArrayList;

/**
 * @author zaimokuza
 */
public interface TagService {

    /**
     * 添加标签
     *
     * @param tag 标签信息
     */
    void addTag(Tag tag);

    /**
     * 添加博客的标签信息
     *
     * @param blogId 博客ID
     * @param tagIds 标签ID集合
     */
    void addBlogTagRelation(String blogId, ArrayList<String> tagIds);

    /**
     * 更新标签
     *
     * @param tag 标签信息
     */
    void updateTag(Tag tag);

    /**
     * 更新博客的标签信息
     *
     * @param blogId 博客ID
     * @param tagIds 标签ID集合
     */
    void updateBlogTagRelation(String blogId, ArrayList<String> tagIds);

    /**
     * 删除标签
     *
     * @param id 标签ID
     */
    void deleteTag(String id);

    /**
     * 根据博客ID批量删除博客标签关联信息
     *
     * @param blogId 博客ID
     */
    void deleteBatchRelationByBlogId(String blogId);

    /**
     * 查询标签集合
     *
     * @param userId 用户ID
     * @return 标签信息集合
     */
    ArrayList<Tag> getTagList(String userId);

    /**
     * 根据博客ID查询标签集合
     *
     * @param blogId 博客ID
     * @return 博客的标签集合
     */
    ArrayList<Tag> getTagListByBlogId(String blogId);

    /**
     * 根据博客ID查询标签ID集合
     *
     * @param blogId 博客ID
     * @return 博客的标签ID集合
     */
    ArrayList<String> getTagIdListByBlogId(String blogId);

    /**
     * 查询标签分页集合
     *
     * @param name     标签名称
     * @param userName 用户名称
     * @param page     当前页
     * @param size     每页数量
     * @return 标签分页集合
     */
    PageResult<Tag> getTagPage(String name, String userName, Integer page, Integer size);

}
